package com.cloud.picture.api.aliyunai.model.create;

import cn.hutool.core.annotation.Alias;
import lombok.Data;

import java.io.Serializable;

/**
 * @author syf
 */
@Data
public class CreatePaintingTaskRequest implements Serializable {

    /**
     * 模型
     */
    private String model = "wanx2.1-t2i-turbo";

    /**
     * 输入图像信息
     */
    private Input input;

    /**
     * 图像处理参数
     */
    private Parameters parameters;
    @Data
    public static class Input implements Serializable{
        /**（必选）
         * 正向提示词，用来描述生成图像中期望包含的元素和视觉特点。
         * 支持中英文，长度不超过800个字符，每个汉字/字母占一个字符，超过部分会自动截断。
         */
        private String prompt;

        /** (可选)
         * 反向提示词，用来描述不希望在画面中看到的内容，可以对画面进行限制。
         */
        @Alias("negative_prompt")
        private String negativePrompt ;

        private static final long serialVersionUID = 2L;
    }

    @Data
    public static class Parameters implements Serializable{

        /**
         * 可选,输出图像的分辨率。默认值是1024*1024。
         * 图像宽高边长的像素范围为：[768, 1440]
         */
        private String size;

        /**
         * 可选,生成图片的数量。取值范围为1~4张，默认为4。
         */
        private Integer n = 1;

        /**
         * 可选,随机数种子，用于控制模型生成内容的随机性。seed参数取值范围是[0, 2147483647]。
         */
        private Integer seed;

        /**
         * 可选,是否开启prompt智能改写。开启后会使用大模型对输入prompt进行智能改写，仅对正向提示词有效。
         * 对于较短的输入prompt生成效果提升明显，但会增加3-4秒耗时。
         */
        private Boolean promptExtend;

        /**
         * 可选,是否添加水印标识，水印位于图片右下角，文案为“AI生成”。
         */
        private Boolean watermark;

        private static final long serialVersionUID = 3L;
    }
    private static final long serialVersionUID = 1L;
}
